// 该案例是一个微调控件的实例，其建立了一个窗口，可以用于选择当前的年份信息
// 使用微调空间的箭头可以实现对年份的翻页，通过单击“确定”按钮可以确认当前的年份选择，
// 应用代码在按钮的灰调函数中调用gtk_spin_button_get_value_as_int函数来获得微调按键的当前值，以确定用户选择的年份

#include <gtk/gtk.h>

GtkWidget *spin;
// 处理按键事件的回调函数
void button_deal(GtkWidget *widget, gpointer *data){
	
	gint year;
	// 获得微调按钮的当前值
	year = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin));
	g_print("Year:%d\n",year);
}

int main(int argc, char *argv[]){
	GtkWidget *window,*box,*button,*label;
	GtkObject *adjustment;

	gtk_init(&argc,&argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"GTK_SPIN_BUTTON_TEST");
	//gtk_widget_set_usize(window,300,250);
	//gtk_widget_set_uposition(window,300,300);
	gtk_signal_connect(GTK_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);

	// 创建box，并将其加入到窗口中
	box = gtk_hbox_new(FALSE,10);
	gtk_container_add(GTK_CONTAINER(window),box);
	// 创建微调对象和微调按钮
	adjustment = gtk_adjustment_new(2020,1967,3000,1,1,0);
	spin = gtk_spin_button_new(GTK_ADJUSTMENT(adjustment),0.5,0);
	// 设置微调按钮在upper和lower之间的循环
	gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(spin),TRUE);
	// 将微调按钮加入到box中
	gtk_box_pack_start(GTK_BOX(box),spin,TRUE,TRUE,5);

	gtk_widget_show(spin);
	
	// 创建标签
	label = gtk_label_new("years");
	gtk_box_pack_start(GTK_BOX(box),label,TRUE,TRUE,0);
	gtk_widget_show(label);

	button = gtk_button_new_with_label("确定");
	gtk_box_pack_start(GTK_BOX(box),button,TRUE,TRUE,0);
	gtk_signal_connect(GTK_OBJECT(button),"clicked",G_CALLBACK(button_deal),NULL);
	
	gtk_widget_show(button);
	gtk_widget_show(box);
	gtk_widget_show(window);
	gtk_main();

	return 0;
}

